package day9.java86;

/**
 * @author oldliu
 * @since 1.0
 */
public class Dog  extends Pet{
    private String strain;//狗的类别
    public Dog(){

    }
    public Dog(String name,int age){
        //!!!!同样调用了父类的无参构造方法
        super.setName(name);
        super.age=age;
    }
    public Dog(String name,String sex,String strain,int age){
        super(name,sex);//必须是第一行
        //setName(name);
        //this.name=name;//错误，私有的不能直接访问
        this.strain=strain;
        super.age=age;
    }

    @Override//重写标志
    public void print() {
        System.out.println("这是一条狗");
        super.print();//调用父类的print
        System.out.println("品种是"+strain);
    }

    @Override
    public void run() {
        System.out.println("小狗"+super.getName()+"在用四条腿在奔跑");
    }

    //抓老鼠,不能重写
    public final void catchMouse(String m){
        System.out.println(super.getName()+"抓住了老鼠"+m);
    }

    @Override
    public String toString() {
        return "这条狗的名字"+super.getName()+",品种是"+strain;
    }

    @Override
    public boolean equals(Object obj) {
        //obj就是Dog,强转
        if(!(obj instanceof Dog)){
            return false;
        }
        Dog d=(Dog)obj;//this 和d比较
        if(this.getName().equals(d.getName())&&this.strain.equals(d.strain))
            return true;
        return super.equals(obj);
    }
}
